package com.caesi.tacacaesifinal;

import android.app.Activity;
import android.content.Intent;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup.LayoutParams;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;

import com.caesi.tacacaesifinal.dao.EquipeDAO;
import com.caesi.tacacaesifinal.dao.SQLiteHelper;
import com.caesi.tacacaesifinal.model.Equipe;

/**
 * 
 * @author William
 * exemplo de como chamar
 *Intent addEquipe = new Intent(getApplicationContext(), AdicionarEquipe.class);
 * addEquipe.putExtra(AdicionarEquipe.ID_EQUIPE, ID_DA_EQUIPE);//modo de edicao
 * addEquipe.putExtra(AdicionarEquipe.ID_CAMPEONATO, ID_DO_CAMPEONATO);//modo de criacao
 * startActivity(addEquipe);
 */
public class AdicionarEquipe extends Activity {

    public static final String ID_EQUIPE = "ID_EQUIPE";
    public static final String ID_CAMPEONATO = "ID_CAMPEONATO";
    private Equipe equipe;
    private final Long ERROR = -1L;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.adicionarequipelayout);
        Intent i = getIntent();
        Long idEquipe = i.getLongExtra(ID_EQUIPE, ERROR);
        Long idCamp = i.getLongExtra(ID_CAMPEONATO, ERROR);
        if(idEquipe != ERROR && !idEquipe.equals("")){
            setAsUpdate();
            SQLiteHelper sqLiteHelper = new SQLiteHelper(getApplicationContext());
            EquipeDAO equipedao = sqLiteHelper.getEquipeDAO();
            equipe = equipedao.retrieveEquipe(Long.valueOf(idEquipe));
            EditText equipeNome = (EditText) findViewById(R.id.nomeEquipe);
            equipeNome.setText(equipe.getNome());
            if(equipe != null){
                for(String nome : equipe.getJogadores()){
                    addIntegranteField(nome);
                }                
            }
        } else if(idCamp != ERROR && !idCamp.equals("")){
            equipe = new Equipe();
            Long idCampeonato = Long.valueOf(idCamp);
            equipe.setIdCampeonato(idCampeonato);
            setAsCreate();
        } else {
            Toast.makeText(getApplicationContext(), "Erro ao adicionar equipe", Toast.LENGTH_SHORT);
            finish();
        }
        ImageButton addIntegrante = (ImageButton) findViewById(R.id.botaoAdicionarIntegrante);
        addIntegrante.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                addIntegranteField("");

            }
        });
    }
    private void setAsCreate(){
        Button salvar = (Button) findViewById(R.id.salvarEquipe);
        salvar.setOnClickListener(new OnClickListener() {
            
            @Override
            public void onClick(View v) {
                EditText nomeEquipe = (EditText) findViewById(R.id.nomeEquipe);
                String nome = nomeEquipe.getText().toString();
                equipe.setNome(nome);
                String[] integrantes = obtemIntegrantes();
                equipe.setJogadores(integrantes);
                SQLiteHelper sqLiteHelper = new SQLiteHelper(getApplicationContext());
                EquipeDAO equipedao = sqLiteHelper.getEquipeDAO();
                equipe = equipedao.insert(equipe);
                if(equipe.getId() == null){
                    Toast.makeText(getApplicationContext(), "Error ao salvar equipe", Toast.LENGTH_SHORT);
                } else {
                    Toast.makeText(getApplicationContext(), "Equipe criada", Toast.LENGTH_SHORT);
                }
                finish();
            }
        });
    }
    
    private void setAsUpdate(){
        TextView titulo = (TextView) findViewById(R.id.titulo_adicionarEquipe);
        titulo.setText("Editar equipe");
        Button salvar = (Button) findViewById(R.id.salvarEquipe);
        salvar.setOnClickListener(new OnClickListener() {
            
            @Override
            public void onClick(View v) {
                EditText nomeEquipe = (EditText) findViewById(R.id.nomeEquipe);
                String nome = nomeEquipe.getText().toString();
                equipe.setNome(nome);
                String[] integrantes = obtemIntegrantes();
                equipe.setJogadores(integrantes);
                SQLiteHelper sqLiteHelper = new SQLiteHelper(getApplicationContext());
                EquipeDAO equipedao = sqLiteHelper.getEquipeDAO();
                equipedao.update(equipe);
                Toast.makeText(getApplicationContext(), "Equipe atualizada", Toast.LENGTH_SHORT);
                finish();
            }
        });
    }

    private void addIntegranteField(String nomeIntegrante) {

        ImageButton remover = new ImageButton(getApplicationContext());
        Drawable rm = getResources().getDrawable(android.R.drawable.ic_delete);
        remover.setImageDrawable(rm);
        
        LayoutParams paramsRemover = new LayoutParams(
                LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
        paramsRemover.width = rm.getMinimumWidth();
        remover.setLayoutParams(paramsRemover);

        final LinearLayout lNomes = (LinearLayout) findViewById(R.id.layoutnomesinterantes);
        int nomeWidth = lNomes.getWidth() - paramsRemover.width;
        LayoutParams paramsNome = new LayoutParams(LayoutParams.FILL_PARENT,
                LayoutParams.WRAP_CONTENT);
        paramsNome.width = nomeWidth;
        EditText nome = new EditText(getApplicationContext());
        nome.setText(nomeIntegrante);
        nome.setLayoutParams(paramsNome);
        

        LayoutParams paramsGeral = new LayoutParams(LayoutParams.MATCH_PARENT,
                LayoutParams.WRAP_CONTENT);
        final LinearLayout layout = new LinearLayout(this.getApplicationContext());
        layout.addView(nome);
        layout.addView(remover);

        layout.setLayoutParams(paramsGeral);

        lNomes.addView(layout);
        remover.setOnClickListener(new OnClickListener() {
            
            @Override
            public void onClick(View v) {
                lNomes.removeView(layout);
            }
        });
        
    }
    
    private String[] obtemIntegrantes(){
        final LinearLayout lNomes = (LinearLayout) findViewById(R.id.layoutnomesinterantes);
        int total = lNomes.getChildCount();
        String[] integrantes = new String[total];
        for(int i = 0; i< total; i++){
            LinearLayout l = (LinearLayout) lNomes.getChildAt(i);
            EditText t = (EditText) l.getChildAt(0);
            integrantes[i] = t.getText().toString();
        }
        
        return integrantes;
    }
}
